package com.example.pathtracker.utils

import com.amap.api.maps.model.LatLng

object LocationUtils {
    
    /**
     * 计算两点之间的距离（米）
     * @param point1 第一个点
     * @param point2 第二个点
     * @return 距离，单位：米
     */
    fun calculateDistance(point1: LatLng, point2: LatLng): Double {
        val lat1 = Math.toRadians(point1.latitude)
        val lon1 = Math.toRadians(point1.longitude)
        val lat2 = Math.toRadians(point2.latitude)
        val lon2 = Math.toRadians(point2.longitude)
        
        val earthRadius = 6371000.0 // 地球半径，单位：米
        
        val latDistance = lat2 - lat1
        val lonDistance = lon2 - lon1
        
        val a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2) +
                Math.cos(lat1) * Math.cos(lat2) *
                Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2)
        
        val c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))
        
        return earthRadius * c
    }
    
    /**
     * 格式化速度显示
     * @param speed 速度，单位：m/s
     * @return 格式化后的速度字符串，单位：km/h
     */
    fun formatSpeed(speed: Float): String {
        return if (speed > 0) {
            String.format("%.1f", speed * 3.6)
        } else {
            "0.0"
        }
    }
    
    /**
     * 检查定位精度是否满足要求
     * @param accuracy 定位精度，单位：米
     * @param maxAccuracy 最大允许精度，默认20米
     * @return 是否满足精度要求
     */
    fun isAccuracyValid(accuracy: Float, maxAccuracy: Float = 20f): Boolean {
        return accuracy <= maxAccuracy
    }
} 